package fr.uniscol.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.AmbiguousBindingException;

public class AnneeScolaire implements Serializable, DonneeUniscol {

	private Etablissement etablissement = null;
	
	private int annee = 2000;
	
	private Date debutEleves = null;
	
	private Date finEleves = null;
	
	private Date debutEnseignants = null;
	
	private Date finEnseignants = null;
	
	private List<Enseignant> enseignants = null;
	
	private List<Periode> periodes = null;
	
	private List<Eleve> eleves = null;
	
	private List<Structure> classes = null;
	
	private List<Matiere> matieres = null;
	
	private boolean verrouillee = false;
	
	public AnneeScolaire(){
	}
	
	public AnneeScolaire(int annee){
		this.annee = annee;
	}
	
	public String getId(){
		return getEtablissement().getUai() + "-" + getAnnee();
	}
	
	public void setId(String id){
	}

	public Etablissement getEtablissement() {
		return etablissement;
	}

	public void setEtablissement(Etablissement etablissement) {
		this.etablissement = etablissement;
	}

	public int getAnnee() {
		return annee;
	}

	public void setAnnee(int annee) {
		this.annee = annee;
	}

	public Date getDebutEleves() {
		return debutEleves;
	}

	public void setDebutEleves(Date debutEleves) {
		this.debutEleves = debutEleves;
	}

	public Date getFinEleves() {
		return finEleves;
	}

	public void setFinEleves(Date finEleves) {
		this.finEleves = finEleves;
	}

	public Date getDebutEnseignants() {
		return debutEnseignants;
	}

	public void setDebutEnseignants(Date debutEnseignants) {
		this.debutEnseignants = debutEnseignants;
	}

	public Date getFinEnseignants() {
		return finEnseignants;
	}

	public void setFinEnseignants(Date finEnseignants) {
		this.finEnseignants = finEnseignants;
	}

	public List<Periode> getPeriodes() {
		if(periodes == null){
			periodes = new ArrayList<Periode>();
		}
		return periodes;
	}
	
	public Periode getPeriodeActive(){
		for(Periode p : getPeriodes()){
			return p;
		}
		return null;
	}

	public void setPeriodes(List<Periode> periodes) {
		this.periodes = periodes;
	}

	public boolean isVerrouillee() {
		return verrouillee;
	}

	public void setVerrouillee(boolean verrouillee) {
		this.verrouillee = verrouillee;
	}

	public List<Eleve> getEleves() {
		if(eleves == null){
			eleves = new ArrayList<Eleve>();
		}
		return eleves;
	}

	public void setEleves(List<Eleve> eleves) {
		this.eleves = eleves;
	}

	public List<Structure> getClasses() {
		if(classes == null){
			classes = new ArrayList<Structure>();
		}
		return classes;
	}

	public void setClasses(List<Structure> classes) {
		this.classes = classes;
	}

	public List<Matiere> getMatieres() {
		if(matieres == null){
			matieres = new ArrayList<Matiere>();
		}
		return matieres;
	}

	public void setMatieres(List<Matiere> matieres) {
		this.matieres = matieres;
	}

	public List<Enseignant> getEnseignants() {
		if(enseignants == null){
			enseignants = new ArrayList<Enseignant>();
		}
		return enseignants;
	}

	public void setEnseignants(List<Enseignant> enseignants) {
		this.enseignants = enseignants;
	}
	
	public Matiere getMatiere(String matiereId){
		for(Matiere mat : getMatieres()){
			if(mat.getId().equals(matiereId)){
				return mat;
			}
		}
		return null;
	}
	
	public Structure getClasse(String structureId){
		for(Structure st : getClasses()){
			if(st.getId().equals(structureId)){
				return st;
			}
		}
		return null;
	}
}
